package servlets;

import java.io.IOException;
import java.util.List;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import coneccion.DocumentoIdentidadConsultas;
import coneccion.EstudiantesConsultas;
import coneccion.PropiedadesSistemaConsultas;
import coneccion.UsuariosConsultas;

import objetos.DocumentoIdentidad;
import objetos.Estudiante;
import utils.Constantes;

/**
 * 
 */
public class CodigoVotacion extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public CodigoVotacion() {
        super();

    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		processRequest(request, response);
	}
	
	protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
		
		request.setCharacterEncoding( "UTF-8");
		String legajo = request.getParameter("legajo");
		String tipoDocumento = request.getParameter("tipoDocumento");
		String numeroDocumento = request.getParameter("numeroDocumento");
		
		
		Estudiante estudianteBusqueda = new Estudiante();
		DocumentoIdentidad documentoIdentidad = null;
		Integer tipoDocumentoInt = null;
		Estudiante estudiante = new Estudiante();
		
		Integer numeroMesa = null;
		String nombreUsuario = request.getUserPrincipal().getName();
		if(nombreUsuario != null && nombreUsuario.length()>0){
			UsuariosConsultas usuariosConsultas = new UsuariosConsultas();
			numeroMesa = usuariosConsultas.getNumeroMesaAsignadoPorNombreUsuarioPresidenteMesa(nombreUsuario);  
		}
		
		PropiedadesSistemaConsultas propiedadesSistemaConsultas = new PropiedadesSistemaConsultas();
		EstudiantesConsultas estudiantesConsultas = new EstudiantesConsultas();
		String estadoVotacion = propiedadesSistemaConsultas.getEstadoVotacion();
		
		if(Constantes.ESTADO_VOTACION_INICIADA.equals(estadoVotacion) && numeroMesa!=null){
			if((legajo!=null && legajo.length()>0) 
					&& (tipoDocumento!=null && tipoDocumento.length()>0) 
					&& (numeroDocumento!=null && numeroDocumento.length()>0)){
				
					estudianteBusqueda.setLegajo(legajo);
					estudianteBusqueda.setNumeroDocumento(numeroDocumento);
				
				try{
					if(tipoDocumento!=null && tipoDocumento.length()>0){
						tipoDocumentoInt = Integer.valueOf(tipoDocumento);
					}
				}catch (Exception e) {
					tipoDocumentoInt = null;
				}
				
				if(tipoDocumentoInt!=null && tipoDocumentoInt.intValue()>0){
					documentoIdentidad = new DocumentoIdentidad();
					documentoIdentidad.setId(tipoDocumentoInt);	
					estudianteBusqueda.setDocumentoIdentidad(documentoIdentidad);
				}
				
				estudiante = estudiantesConsultas.getEstudiante(estudianteBusqueda);
			 	
				if(estudiante != null 
						&& estudiante.getId()!=null 
						&& !estudiante.getEstadoVoto() 
						&& estudiante.getNumeroMesa()!=null
						&& estudiante.getNumeroMesa().intValue()==numeroMesa.intValue()){
					Boolean codigoCreado = estudiantesConsultas.crearCodigovotacion(estudiante.getId());
					if(codigoCreado){
						estudiante = estudiantesConsultas.getEstudianteParaHabilitarVotacion(estudianteBusqueda);
					}
				}
				
			}
		}
		request.setAttribute("estadoVotacion", estadoVotacion);
		request.setAttribute("numeroMesa", numeroMesa);
		request.setAttribute("estudiante", estudiante);
		RequestDispatcher disp = null;
		disp = request.getRequestDispatcher("pages/presidente_mesa/codigoVotacion.jsp");
		
		disp.forward(request, response);
	}

}
